package com.lsl.abstract_factory.factory;

import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

/**
 * 抽象的表示HTML页面的类
 * 如果Link类和Tray类比喻成抽象的零件的话，那么Page类就是抽象的产品
 * title和author分别表示页面标题和页面作者的字段
 *
 * @author Zed
 * @description
 * @date 2022/11/27 18:06
 */
public abstract class Page {
    protected String title;
    protected String authorName;
    protected ArrayList content = new ArrayList();

    public Page(String title, String authorName) {
        this.title = title;
        this.authorName = authorName;
    }

    /**
     * 向页面中增加Item（即Link或Tray）
     *
     * @param item
     */
    public void add(com.lsl.abstract_factory.factory.Item item) {
        content.add(item);
    }

    /**
     * 一个简单的 template Method 模式的方法
     */
    public void outPut() {
        try {
            String fileName = title + ".html";
            FileWriter writer = new FileWriter(fileName);
            writer.write(this.makeHTML());
            writer.close();
            System.out.println(fileName + " 编写完成。");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public abstract String makeHTML();
}
